iT邦幫忙

2025 iThome 鐵人賽

DAY 27
0
AI & Data

Rosalind 生物資訊解題系統系列 第 27

Day27 | Rosalind 生資解題 - 015. LIA(Independent Alleles)獨立分配律

  • 分享至 

  • xImage
  •  

Day27 | Rosalind 生資解題 - 015. LIA(Independent Alleles)獨立分配律

題目連結:https://rosalind.info/problems/lia/

https://ithelp.ithome.com.tw/upload/images/20251008/20125192mkgSqjpvsB.png

今天的又是非常「奇怪」的一題,題目輸入與輸出之間的關係不明朗

輸入:

2 1

輸出:

0.684

一頭霧水,啥軌?!

https://ithelp.ithome.com.tw/upload/images/20251008/20125192w5cjVT0Nfr.png

首先要知道0.684這個數字是怎麼來的
就是175除以256!

0.684 ≈ 175/256 = 0.6836

題目翻譯成白話文:
孟德爾分配律,要計算龐尼特方格
一開始是固定的AaBb的基因型,
隨機產生後代,每一個子代都會產生兩個子代
每一代的每一個孩子,各自去外面找了一個固定模板AaBb基因型的配偶
而不是彼此互相交配

給予k和N
計算k代之後,基因型仍然是AaBb的個體數量 >=N 個的機率有多大?

再更白話:Tom是AaBb,找了AaBb的女人做老婆
Tom家族不知為何得到一種家庭詛咒,每個後代只能找AaBb的人當老婆/老公
而且每個子代都會誕生兩個孩子

這題題目不難,只要能看懂題目敘述
知道小技巧後,就能輕而易舉解出

https://ithelp.ithome.com.tw/upload/images/20251008/20125192BViXRkmH5Q.png

這題可以想像成呢:
有個四面骰子,只有一面寫著「AaBb」,其他三面不是
接著我們將骰子丟四次,試問「至少出現一次AaBb」的機率是多少?

=> 至少成功一次 = 100% − 全部失敗的機率

那麼回頭看,題目範例就是:
100% - (3/4)^4 = 1−(81/256) = 175/256 ≈ 0.684

解法

import math

def lia(k: int, N: int) -> float:
    n = 2 ** k
    p = 0.25
    cdf = 0.0
    for i in range(N):
        cdf += math.comb(n, i) * (p ** i) * ((1 - p) ** (n - i))
    return 1.0 - cdf

print(f"{lia(2, 1):.3f}") 


上一篇
Day26 | Rosalind 生資解題 - 014. LCSM(Finding a Shared Motif)最長子字串比對 - 下篇
下一篇
Day28 | Rosalind 生資解題 - 016. MPRT(Finding a Protein Motif)
系列文
Rosalind 生物資訊解題系統28
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言